The following code summarizes and plots the results out our experiments

Type any R code in the chunk, for example:

── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ forcats   1.0.0     ✔ purrr     1.0.2
✔ ggplot2   3.5.1     ✔ stringr   1.5.1
✔ lubridate 1.9.3     ✔ tibble    3.2.1
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Warning: Removed 50 rows containing missing values or values outside the scale range
(`geom_line()`).
Warning in max(ids, na.rm = TRUE): no non-missing arguments to max; returning
-Inf

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: Removed 14 rows containing missing values or values outside the scale range
(`geom_line()`).
Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Warning: There were 4 warnings in `reframe()`.
The first warning was:
ℹ In argument: `auc_low = (mean(auc) - qt(0.975, df = n() - 1) *
  sd(auc)/sqrt(n()))`.
Caused by warning in `qt()`:
! NaNs produced
ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Table summarizing the experiment results

Joining with `by = join_by(dataset, estimator, height)`

Summary Plot

data <- read.csv("results_aggregated/SUSY_SVM_break_2024-06-14_09:31:52.csv")
break_down_estimates <- data %>% group_by(outliers) %>% reframe(break_prob = mean(auc<0.5))
plot(break_down_estimates)

break_down_estimates
LS0tCnRpdGxlOiAiRXhwZXJpbWVudGFsIHJlc3VsdHMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoZSBmb2xsb3dpbmcgY29kZSBzdW1tYXJpemVzIGFuZCBwbG90cyB0aGUgcmVzdWx0cyBvdXQgb3VyIGV4cGVyaW1lbnRzCmBgYHtyIHV0aWxfZnVuY3Rpb25zLCBlY2hvPUYsIG1lc3NhZ2UgPSBGLCB3YXJuID0gRn0KCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkocmVhZHIpCmxpYnJhcnkodGlkeXIpCgptZXJnZV9jc3ZfZnJhZ21lbnRzIDwtIGZ1bmN0aW9uKGZvbGRlcl9BLCBmb2xkZXJfQikgewogICMgR2V0IGxpc3Qgb2YgQ1NWIGZyYWdtZW50IGZpbGVzIGluIHRoZSBzb3VyY2UgZm9sZGVyCiAgY3N2X2ZpbGVzIDwtIGxpc3QuZmlsZXMoZm9sZGVyX0EsIHBhdHRlcm4gPSAiXFwuY3N2XFwuXFxkKyQiLCBmdWxsLm5hbWVzID0gVFJVRSkKCiAgIyBFeHRyYWN0IGJhc2UgbmFtZXMgYW5kIGdyb3VwIGZpbGVzCiAgYmFzZV9uYW1lcyA8LSBnc3ViKCJcXC5jc3ZcXC5cXGQrJCIsICIiLCBiYXNlbmFtZShjc3ZfZmlsZXMpKQogIGZpbGVfZ3JvdXBzIDwtIHNwbGl0KGNzdl9maWxlcywgYmFzZV9uYW1lcykKCiAgIyBQcm9jZXNzIGVhY2ggZ3JvdXAKICBmb3IgKGJhc2VfbmFtZSBpbiBuYW1lcyhmaWxlX2dyb3VwcykpIHsKICAgICMgR2V0IHRoZSBmaWxlcyBmb3IgdGhlIGN1cnJlbnQgZ3JvdXAgYW5kIHNvcnQgdGhlbSBieSBmcmFnbWVudCBudW1iZXIKICAgIGdyb3VwX2ZpbGVzIDwtIGZpbGVfZ3JvdXBzW1tiYXNlX25hbWVdXQogICAgZ3JvdXBfZmlsZXMgPC0gZ3JvdXBfZmlsZXNbb3JkZXIoYXMubnVtZXJpYyhnc3ViKCIuKlxcLmNzdlxcLihcXGQrKSQiLCAiXFwxIiwgZ3JvdXBfZmlsZXMpKSldCgogICAgIyBDcmVhdGUgYW4gZW1wdHkgY2hhcmFjdGVyIHZlY3RvciB0byBzdG9yZSB0aGUgY29tYmluZWQgY29udGVudAogICAgY29tYmluZWRfY29udGVudCA8LSBjaGFyYWN0ZXIoKQoKICAgICMgUmVhZCBhbmQgY29uY2F0ZW5hdGUgYWxsIENTViBmcmFnbWVudHMgaW4gdGhlIGdyb3VwCiAgICBmb3IgKGZpbGUgaW4gZ3JvdXBfZmlsZXMpIHsKICAgICAgZmlsZV9jb250ZW50IDwtIHJlYWRMaW5lcyhmaWxlKQogICAgICBjb21iaW5lZF9jb250ZW50IDwtIGMoY29tYmluZWRfY29udGVudCwgZmlsZV9jb250ZW50KQogICAgfQoKICAgICMgUmVtb3ZlIGR1cGxpY2F0ZSBoZWFkZXIgbGluZXMgaWYgcHJlc2VudAogICAgaGVhZGVyIDwtIGNvbWJpbmVkX2NvbnRlbnRbMV0KICAgIGNvbWJpbmVkX2NvbnRlbnQgPC0gYyhoZWFkZXIsIGNvbWJpbmVkX2NvbnRlbnRbLTFdKQoKICAgICMgRGVmaW5lIHRoZSBvdXRwdXQgZmlsZSBwYXRoCiAgICBvdXRwdXRfZmlsZV9uYW1lIDwtIHBhc3RlMChiYXNlX25hbWUsICIuY3N2IikKICAgIG91dHB1dF9maWxlX3BhdGggPC0gZmlsZS5wYXRoKGZvbGRlcl9CLCBvdXRwdXRfZmlsZV9uYW1lKQoKICAgICMgV3JpdGUgdGhlIGNvbWJpbmVkIGNvbnRlbnQgdG8gYSBDU1YgZmlsZSBpbiB0aGUgZGVzdGluYXRpb24gZm9sZGVyCiAgICB3cml0ZUxpbmVzKGNvbWJpbmVkX2NvbnRlbnQsIG91dHB1dF9maWxlX3BhdGgpCgogICAgbWVzc2FnZSgiQ1NWIGZyYWdtZW50cyBmb3IgJyIsIGJhc2VfbmFtZSwgIicgbWVyZ2VkIGFuZCBzYXZlZCB0byAiLCBvdXRwdXRfZmlsZV9wYXRoKQogIH0KfQoKCmV1Y2xpZGVhbl9kaXN0YW5jZSA8LSBmdW5jdGlvbih2ZWMxLCB2ZWMyKSB7CiAgIyBDaGVjayBpZiBib3RoIHZlY3RvcnMgaGF2ZSB0aGUgc2FtZSBsZW5ndGgKICBpZiAobGVuZ3RoKHZlYzEpICE9IGxlbmd0aCh2ZWMyKSkgewogICAgc3RvcCgiVmVjdG9ycyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiIpCiAgfQoKICAjIENhbGN1bGF0ZSB0aGUgc3VtIG9mIHNxdWFyZWQgZGlmZmVyZW5jZXMKICBzdW1fc3FfZGlmZiA8LSBzdW0oKHZlYzEgLSB2ZWMyKV4yKQoKICAjIFRha2UgdGhlIHNxdWFyZSByb290IG9mIHRoZSBzdW0gb2Ygc3F1YXJlZCBkaWZmZXJlbmNlcwogIGRpc3QgPC0gc3FydChzdW1fc3FfZGlmZikKCiAgcmV0dXJuKGRpc3QpCn0KCgpleHBlcmltZW50X2Zyb21fbmFtZSA8LSBmdW5jdGlvbihmaWxlbmFtZSl7CiAgcGF0dGVybiA8LSAiLitcXC8oW0EtWmEtejAtOV0rPylfKFtBLVphLXowLTldKz8pXyhbQS1aYS16MC05X10rKV8yMDI0IgogIG1hdGNoZXMgPC0gcmVnZXhlYyhwYXR0ZXJuLCBmaWxlbmFtZSkKICBjYXB0dXJlcyA8LSByZWdtYXRjaGVzKGZpbGVuYW1lLCBtYXRjaGVzKQoKICBpZiAobGVuZ3RoKGNhcHR1cmVzW1sxXV0pID4gMCkgewogICAgY29tcG9uZW50cyA8LSBjYXB0dXJlc1tbMV1dWy0xXSAgIyBSZW1vdmUgdGhlIGZ1bGwgbWF0Y2gKICAgIGRhdGFzZXQgPC0gY29tcG9uZW50c1sxXQogICAgZXN0aW1hdG9yIDwtIGNvbXBvbmVudHNbMl0KICAgIGV4cGVyaW1lbnRfbmFtZSA8LSBjb21wb25lbnRzWzNdCgogICAgcmV0dXJuKGxpc3QoZGF0YXNldCA9IGRhdGFzZXQsIGVzdGltYXRvciA9IGVzdGltYXRvciwgZXhwZXJpbWVudF9uYW1lID0gZXhwZXJpbWVudF9uYW1lKSkKICB9IGVsc2UgewogICAgcmV0dXJuKGxpc3QoZGF0YXNldCA9IE5BLCBlc3RpbWF0b3IgPSBOQSwgZXhwZXJpbWVudF9uYW1lID0gTkEpKQogIH0KfQpgYGAKCgpgYGB7ciBsb2FkX2FnZ3JlZ2F0ZV9kYXRhLCBlY2hvPUYsIGNhY2hlID0gVCwgbWVzc2FnZSA9IEYsIHdhcm5pbmcgPSBGfQptZXJnZV9jc3ZfZnJhZ21lbnRzKCJyZXN1bHRzX25ldyIsInJlc3VsdHNfYWdncmVnYXRlZCIpCgpmaWxlcyA8LSBsaXN0LmZpbGVzKCJyZXN1bHRzX2FnZ3JlZ2F0ZWQiLCBwYXR0ZXJuID0gIlxcLmNzdiIsIGZ1bGwubmFtZXMgPSBUUlVFKQoKZnVsbF9kYXRhIDwtIGRhdGEuZnJhbWUoKQpmb3IgKGZpbGUgaW4gZmlsZXMpewogIGRhdGEgPC0gcmVhZC5jc3YoZmlsZSkKICBwYXJhbXMgPC0gZGF0YSRwYXJhbXMKICBudW1lcmljX3BhcmFtcyA8LSAoc3Ryc3BsaXQoZ3N1YigiXFxbID98XFxdfFxuIiwgIiIsIHBhcmFtcyksICJcXHMrIikpCiAgZmluYWxfZXN0aW1hdG9ycyA8LSBkby5jYWxsKHJiaW5kLCBsYXBwbHkobnVtZXJpY19wYXJhbXMsIGFzLm51bWVyaWMpKQogIGRhdGEkcGFyYW1zIDwtIGZpbmFsX2VzdGltYXRvcnMKICB1bnBlcnR1cmJlZF9yYWRvbl9wb2ludCA8LSBhcHBseSh0KGRhdGEgJT4lIGZpbHRlcihvdXRsaWVycz09MCwgc2lnbWE9PTApICU+JSAuJHBhcmFtcyksMSxtZWFuKQoKICBkYXRhJHJhZG9uX2JpYXMgPC0gYXBwbHkoZGF0YSRwYXJhbXMsMSxmdW5jdGlvbih4KXtldWNsaWRlYW5fZGlzdGFuY2UoeCx1bnBlcnR1cmJlZF9yYWRvbl9wb2ludCl9KQogIGRhdGEkcGFyYW1zIDwtIE5VTEwKICBkYXRhJGVzdGltYXRvcnMgPC0gbGlzdChleHBlcmltZW50X2Zyb21fbmFtZShmaWxlKSkKICBkYXRhIDwtIGRhdGEgJT4lIHVubmVzdF93aWRlcihlc3RpbWF0b3JzKQoKICBmdWxsX2RhdGEgPC0gYmluZF9yb3dzKGRhdGEsZnVsbF9kYXRhKQp9CmZ1bGxfZGF0YQoKYGBgCgoKVHlwZSBhbnkgUiBjb2RlIGluIHRoZSBjaHVuaywgZm9yIGV4YW1wbGU6CmBgYHtyLCBlY2hvID0gRn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZ2dwbG90MikKCmZvcihkc2V0IGluIHVuaXF1ZShmdWxsX2RhdGEkZGF0YXNldCkpewogIGZvcihlc3QgaW4gdW5pcXVlKGZ1bGxfZGF0YSRlc3RpbWF0b3IpKXsKICAgIGZvcihleHBybXQgaW4gdW5pcXVlKGZ1bGxfZGF0YSRleHBlcmltZW50X25hbWUpKXsKCiAgICAgIHN1bW1hcnlfZGF0YSA8LSBmdWxsX2RhdGEgJT4lCiAgICAgICAgICAgICAgZmlsdGVyKGV4cGVyaW1lbnRfbmFtZSA9PSBleHBybXQsIGRhdGFzZXQgPT0gZHNldCwgZXN0aW1hdG9yID09IGVzdCkgJT4lCiAgICAgICAgICAgICAgZ3JvdXBfYnkob3V0bGllcnMsc2lnbWEpICU+JQogICAgICAgICAgICAgIGZpbHRlcihzcGxpdCA9PSAwKSAlPiUKICAgICAgICAgICAgICByZWZyYW1lKAogICAgICAgICAgICAgICAgICAgICAgbWVhbl9hdWMgPSBtZWFuKGF1YyksCiAgICAgICAgICAgICAgICAgICAgICBhdWNfbG93ID0gKG1lYW4oYXVjKSAtIHF0KDAuOTc1LCBkZj1uKCktMSkgKiBzZChhdWMpIC8gc3FydChuKCkpKSwKICAgICAgICAgICAgICAgICAgICAgIGF1Y19oaWdoID0gKG1lYW4oYXVjKSArIHF0KDAuOTc1LCBkZj1uKCktMSkgKiBzZChhdWMpIC8gc3FydChuKCkpKSwKICAgICAgICAgICAgICAgICAgICAgIG1lYW5fcmFkb25fYmlhcyA9IG1lYW4ocmFkb25fYmlhcyxuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICAgICAgICAgICAgcmFkb25fYmlhc19sb3cgPSAobWVhbihyYWRvbl9iaWFzLG5hLnJtID0gVFJVRSkgLSBxdCgwLjk3NSwgZGY9bigpLTEpICogc2QocmFkb25fYmlhcyxuYS5ybSA9IFRSVUUpIC8gc3FydChuKCkpKSwKICAgICAgICAgICAgICAgICAgICAgIHJhZG9uX2JpYXNfaGlnaCA9IChtZWFuKHJhZG9uX2JpYXMsbmEucm0gPSBUUlVFKSArIHF0KDAuOTc1LCBkZj1uKCktMSkgKiBzZChyYWRvbl9iaWFzLG5hLnJtID0gVFJVRSkgLyBzcXJ0KG4oKSkpCiAgICAgICAgICAgICAgKQogICAgICBpZihucm93KHN1bW1hcnlfZGF0YSkgPT0gMCl7CiAgICAgICAgbmV4dAogICAgICB9CgogICAgICBsb25nX3N1bW1hcnlfZGF0YSA8LSAgc3VtbWFyeV9kYXRhICU+JQogICAgICAgICAgICAgIHBpdm90X2xvbmdlcihjb2xzID0gYyhtZWFuX2F1YywgbWVhbl9yYWRvbl9iaWFzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAibWVhc3VyZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJ2YWx1ZSIpICU+JQogICAgICAgICAgICAgIG11dGF0ZShoaWdoID0gaWZlbHNlKG1lYXN1cmUgPT0gIm1lYW5fYXVjIixhdWNfaGlnaCxyYWRvbl9iaWFzX2hpZ2gpLAogICAgICAgICAgICAgICAgICAgICBsb3cgPSBpZmVsc2UobWVhc3VyZSA9PSAibWVhbl9hdWMiLGF1Y19sb3cscmFkb25fYmlhc19sb3cpKQoKICAgICAgaWYobnJvdyhsb25nX3N1bW1hcnlfZGF0YSkgPT0gMCl7CiAgICAgICAgbmV4dAogICAgICB9CgogICAgICBwIDwtIGdncGxvdChsb25nX3N1bW1hcnlfZGF0YSwgYWVzKHg9b3V0bGllcnMsIGZpbGw9YXMuZmFjdG9yKHNpZ21hKSkpICsKICAgICAgICAgICAgICB0aGVtZShwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3IgPSAiYmxhY2siKSkgKwogICAgICAgICAgICAgIGdlb21fbGluZShhZXMoeT12YWx1ZSxjb2xvciA9IGFzLmZhY3RvcihzaWdtYSkpKSArCiAgICAgICAgICAgICAgZ2VvbV9yaWJib24oYWVzKHltaW4gPSBsb3csIHltYXggPSBoaWdoKSxhbHBoYSA9IDAuMikgKwogICAgICAgICAgICAgIGZhY2V0X3dyYXAofm1lYXN1cmUsc2NhbGVzID0gImZyZWVfeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcC5wb3NpdGlvbiA9ICJsZWZ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsbGVyID0gbGFiZWxsZXIobWVhc3VyZSA9IGMoIm1lYW5fYXVjIiA9ICJST0MtQVVDIiwibWVhbl9yYWRvbl9iaWFzIiA9ICJEaXN0YW5jZSB0byB0cnVlIGNlbnRlciIpKSkgKwogICAgICAgICAgICAgICMgZ2VvbV9saW5lKGFlcyh5PW1lYW5fcmFkb25fYmlhcy9jb2VmZitvZmZzZXQsY29sb3IgPSBhcy5mYWN0b3Ioc2lnbWEpKSkgKwogICAgICAgICAgICAgICMgZ2VvbV9yaWJib24oYWVzKHltaW4gPSByYWRvbl9iaWFzX2xvdy9jb2VmZitvZmZzZXQsIHltYXggPSByYWRvbl9iaWFzX2hpZ2gvY29lZmYrb2Zmc2V0KSxhbHBoYSA9IDAuMikgKwogICAgICAgICAgICAgIGdlb21fdmxpbmUoYWVzKHhpbnRlcmNlcHQgPSA1MiwgbGluZXR5cGUgPSAizroiKSkgKwogICAgICAgICAgICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoZXhwcm10ICwiIGV4cGVyaW1lbnQgIixlc3QsICIgUmFkb24tbWFjaGluZSBvbiAiLGRzZXQsICIgRGF0YXNldCBoPSAiLGlmZWxzZShkc2V0PT0iY29kcm5hIiw1LDMpKSwKICAgICAgICAgICAgICAgICAgIHggPSAiTnVtYmVyIG9mIG91dGxpZXJzIiwKICAgICAgICAgICAgICAgICAgIHkgPSAiIiwKICAgICAgICAgICAgICAgICAgIGNvbG9yID0gImFkZGl0aXZlIG5vaXNlICjPgykiLAogICAgICAgICAgICAgICAgICAgZmlsbCA9ICJhZGRpdGl2ZSBub2lzZSAoz4MpIikgKwogICAgICAgICAgICAgIHNjYWxlX2xpbmV0eXBlX21hbnVhbChuYW1lPSLOuiIsIGxhYmVscyA9ICIiLCB2YWx1ZXM9ICJkYXNoZWQiKSArCiAgICAgICAgICAgICAgdGhlbWVfbWluaW1hbCgpICsKICAgICAgICAgICAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwKICAgICAgICAgICAgICAgICAgICBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwKICAgICAgICAgICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLCAgIyBBZGp1c3QgbGVnZW5kIHRleHQgc2l6ZQogICAgICAgICAgICAgICAgICAgIGxlZ2VuZC5rZXkud2lkdGggPSB1bml0KDAuNzUsICJjbSIpLCAgIyBBZGp1c3Qgd2lkdGggb2YgbGVnZW5kIGtleXMgKGNvbG9yIGJveGVzKQogICAgICAgICAgICAgICAgICAgIGxlZ2VuZC5rZXkuaGVpZ2h0ID0gdW5pdCgwLjUsICJjbSIpLAogICAgICAgICAgICAgICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwKICAgICAgICAgICAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgZmFjZSA9ICJib2xkIiksCiAgICAgICAgICAgICAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYsIHZqdXN0ID0yKSwgIyBMZWZ0LWFsaWduIGZhY2V0IGxhYmVscwogICAgICAgICAgICAgICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgaGp1c3QgPSAwKSwgIyBSaWdodC1hbGlnbiB5LWF4aXMgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgICAjIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgICAgICAgc3RyaXAucGxhY2VtZW50ID0gIm91dHNpZGUiLAogICAgICAgICAgICAgICAgICAgICMgS2VlcCB0aGUgcGFuZWwgYm9yZGVyCiAgICAgICAgICAgICAgICAgICAgIyBwYW5lbC5ib3JkZXIgPSBlbGVtZW50X3JlY3QoY29sb3IgPSAiZ3JheTcwIiwgZmlsbCA9IE5BLCBzaXplPTAuNSksCiAgICAgICAgICAgICAgICAgICAgYXhpcy50aWNrcyA9IGVsZW1lbnRfbGluZSgpKQogICAgICBwbG90KHApCiAgICB9CiAgfQp9CiMgZm9yIChmaWxlIGluIGZpbGVzKXsKIyAgIHByaW50KGZpbGUpCiMgICBkYXRhIDwtIHJlYWQuY3N2KGZpbGUpCiMgICBwYXJhbXMgPC0gZGF0YSRwYXJhbXMKIwojICAgIyBSZW1vdmUgc3F1YXJlIGJyYWNrZXRzIGFuZCBzcGxpdCB0aGUgc3RyaW5nIGJ5IHdoaXRlc3BhY2UKIyAgIG51bWVyaWNfcGFyYW1zIDwtIChzdHJzcGxpdChnc3ViKCJcXFsgP3xcXF0iLCAiIiwgcGFyYW1zKSwgIlxccysiKSkKIyAgIGZpbmFsX2VzdGltYXRvcnMgPC0gZG8uY2FsbChyYmluZCwgbGFwcGx5KG51bWVyaWNfcGFyYW1zLCBhcy5udW1lcmljKSkKIwojICAgZGF0YSRwYXJhbXMgPC0gZmluYWxfZXN0aW1hdG9ycwojCiMKIyAgIHN1bW1hcnlfZGF0YSA8LSBkYXRhICU+JQojICAgICAgICAgICBncm91cF9ieShvdXRsaWVycyxzaWdtYSkgJT4lCiMgICAgICAgICAgIHJlZnJhbWUoCiMgICAgICAgICAgICAgICAgICAgbWVhbl95ID0gbWVhbihhdWMpLAojICAgICAgICAgICAgICAgICAgIGNpX2xvdyA9IHBtaW4obWVhbihhdWMpIC0gcXQoMC45NzUsIGRmPW4oKS0xKSAqIHNkKGF1YykgLyBzcXJ0KG4oKSksIG1pbihhdWMpKSwKIyAgICAgICAgICAgICAgICAgICBjaV9oaWdoID0gcG1heChtZWFuKGF1YykgKyBxdCgwLjk3NSwgZGY9bigpLTEpICogc2QoYXVjKSAvIHNxcnQobigpKSwgbWF4KGF1YykpCiMgICAgICAgICAgICkKIwojCiMgICAoZ2dwbG90KHN1bW1hcnlfZGF0YSAlPiUgZmlsdGVyKHNpZ21hICVpbiUgYygwLDFlLTEwLDFlLTUsMC4wMDEsMC4xLDAuNSwxLDIpKSwgYWVzKHggPSBvdXRsaWVycywgeSA9IG1lYW5feSkpICsKIyAgICAgICAgICAgZ2VvbV9saW5lKGFlcyhjb2xvciA9IGFzLmZhY3RvcihzaWdtYSkpKSArCiMgICAgICAgICAgIGdlb21fcmliYm9uKGFlcyh5bWluID0gY2lfbG93LCB5bWF4ID0gY2lfaGlnaCwgZmlsbD1hcy5mYWN0b3Ioc2lnbWEpKSwgYWxwaGEgPSAwLjIpICsKIyAgICAgICAgICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gNTIsIGxpbmV0eXBlPSJkYXNoZWQiKSArCiMgICAgICAgICAgICMgZ2VvbV9wb2ludChkYXRhID0gZGF0YSwgYWVzKHggPSB4LCB5ID0geSksIGFscGhhID0gMC4xKSArICMgb3B0aW9uYWw6IHRvIHNob3cgb3JpZ2luYWwgZGF0YSBwb2ludHMKIyAgICAgICAgICAgbGFicyh0aXRsZSA9ICJMaW5lYXIgU1ZNIFJhZG9uIG1hY2hpbmUgU1VTWSBEYXRhc2V0IGhlaWdodD0zIiwKIyAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IGZpbGUsCiMgICAgICAgICAgICAgICAgeCA9ICJOdW1iZXIgb2Ygb3V0bGllcnMiLAojICAgICAgICAgICAgICAgIHkgPSAiUk9DLUFVQy1zY29yZSIpICsKIyAgICAgICAgICAgdGhlbWVfbWluaW1hbCgpKSAlPiUgcGxvdCgpCiMKIwojCiMgICAoZ2dwbG90KGRhdGEgJT4lIGZpbHRlcihvdXRsaWVycyA9PSAwKSwKIyAgICAgICAgICBhZXMoeCA9IGFzLmZhY3RvcihzaWdtYSksIHk9IGF1YywgZmlsbD1hcy5mYWN0b3Ioc2lnbWEpKSkgKwojICAgICAgICAgICBnZW9tX2JveHBsb3QoKSArCiMgICAgICAgICAgIGxhYnMoc3VidGl0bGUgPSBmaWxlKSkgJT4lIHBsb3QoKQojCiMKIyAgIHVucGVydHVyYmVkX3JhZG9uX3BvaW50IDwtIGFwcGx5KHQoZGF0YSAlPiUgZmlsdGVyKG91dGxpZXJzPT0wLCBzaWdtYT09MCkgJT4lIC4kcGFyYW1zKSwxLG1lYW4pCiMKIyAgIGRhdGEkcmFkb25fYmlhcyA8LSBhcHBseShkYXRhJHBhcmFtcywxLGZ1bmN0aW9uKHgpe2V1Y2xpZGVhbl9kaXN0YW5jZSh4LHVucGVydHVyYmVkX3JhZG9uX3BvaW50KX0pCiMKIwojICAgc3VtbWFyeV9kYXRhIDwtIGRhdGEgJT4lCiMgICAgICAgICAgIGdyb3VwX2J5KG91dGxpZXJzLHNpZ21hKSAlPiUKIyAgICAgICAgICAgcmVmcmFtZSgKIyAgICAgICAgICAgICAgICAgICBtZWFuX3kgPSBtZWFuKHJhZG9uX2JpYXMpLAojICAgICAgICAgICAgICAgICAgIGNpX2xvdyA9IHBtYXgobWVhbihyYWRvbl9iaWFzKSAtIHF0KDAuOTc1LCBkZj1uKCktMSkgKiBzZChyYWRvbl9iaWFzKSAvIHNxcnQobigpKSwgbWluKHJhZG9uX2JpYXMpKSwKIyAgICAgICAgICAgICAgICAgICBjaV9oaWdoID0gcG1pbihtZWFuKHJhZG9uX2JpYXMpICsgcXQoMC45NzUsIGRmPW4oKS0xKSAqIHNkKHJhZG9uX2JpYXMpIC8gc3FydChuKCkpLCBtYXgocmFkb25fYmlhcykpCiMgICAgICAgICAgICkKIwojCiMgICAoZ2dwbG90KHN1bW1hcnlfZGF0YSAlPiUgZmlsdGVyKHNpZ21hICVpbiUgYygwLDFlLTEwLDFlLTUsMC4wMDEsMC4xLDAuNSwxLDIpKSwgYWVzKHggPSBvdXRsaWVycywgeSA9IG1lYW5feSkpICsKIyAgICAgICAgICAgZ2VvbV9saW5lKGFlcyhjb2xvciA9IGFzLmZhY3RvcihzaWdtYSkpKSArCiMgICAgICAgICAgIGdlb21fcmliYm9uKGFlcyh5bWluID0gY2lfbG93LCB5bWF4ID0gY2lfaGlnaCwgZmlsbD1hcy5mYWN0b3Ioc2lnbWEpKSwgYWxwaGEgPSAwLjIpICsKIyAgICAgICAgICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gNTIsIGxpbmV0eXBlPSJkYXNoZWQiKSArCiMgICAgICAgICAgICMgZ2VvbV9wb2ludChkYXRhID0gZGF0YSwgYWVzKHggPSB4LCB5ID0geSksIGFscGhhID0gMC4xKSArICMgb3B0aW9uYWw6IHRvIHNob3cgb3JpZ2luYWwgZGF0YSBwb2ludHMKIyAgICAgICAgICAgbGFicyh0aXRsZSA9ICJMaW5lYXIgU1ZNIFJhZG9uIG1hY2hpbmUgU1VTWSBEYXRhc2V0IGhlaWdodD0zIiwKIyAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IGZpbGUsCiMgICAgICAgICAgICAgICAgeCA9ICJOdW1iZXIgb2Ygb3V0bGllcnMiLAojICAgICAgICAgICAgICAgIHkgPSAiQmlhcyBvZiByYWRvbiBwb2ludCIpICsKIyAgICAgICAgICAgdGhlbWVfbWluaW1hbCgpKSU+JSBwbG90KCkKIwojCiMgICAoZ2dwbG90KGRhdGEgJT4lIGZpbHRlcihvdXRsaWVycyA9PSAwKSwKIyAgICAgICAgICBhZXMoeCA9IGFzLmZhY3RvcihzaWdtYSksIHk9IHJhZG9uX2JpYXMsIGZpbGw9YXMuZmFjdG9yKHNpZ21hKSkpICsKIyAgICAgICAgICAgZ2VvbV9ib3hwbG90KCkgKwojICAgICAgICAgICBsYWJzKHN1YnRpdGxlID0gZmlsZSkpICU+JSBwbG90KCkKIwojCiMKIyB9CgpgYGAKCgoKIyMgVGFibGUgc3VtbWFyaXppbmcgdGhlIGV4cGVyaW1lbnQgcmVzdWx0cwoKYGBge3Igc3VtbWFyeV90YWJsZSwgZXZhbCA9IFQsIGVjaG8gPSBGfQoKIyBmdWxsX2RhdGEgJT4lIGZpbHRlcigib3V0bGllcnMiID09IDApCgoKCmF1Y19ub3JtYWxfZGF0YSA8LSBmdWxsX2RhdGEgJT4lCiAgICAgICAgZmlsdGVyKGV4cGVyaW1lbnRfbmFtZSA9PSAiYmlnX2ZsaXAiLCBzaWdtYSA9PTAsIG91dGxpZXJzID09IDApICU+JQogICAgICAgIGdyb3VwX2J5KGRhdGFzZXQsZXN0aW1hdG9yLGhlaWdodCkgJT4lCiAgICAgICAgcmVmcmFtZShhdWNfemVybyA9IG1lYW4oYXVjKSxhdWNfemVyb19zdGQgPSBzZChhdWMpKSAlPiUgbXV0YXRlKGF1Yz0gTlVMTCkKCmF1Y18xMDAwX2RhdGEgPC0gZnVsbF9kYXRhICU+JQogICAgICAgIGZpbHRlcihleHBlcmltZW50X25hbWUgPT0gImJpZ19mbGlwIikgJT4lCiAgICAgICAgZ3JvdXBfYnkoZGF0YXNldCxlc3RpbWF0b3IsaGVpZ2h0LHNpZ21hLG91dGxpZXJzKSAlPiUKICAgICAgICByZWZyYW1lKGF1Y18xMDAwID0gbWVhbihhdWMpLCBhdWNfMTAwMF9zdGQgPSBzZChhdWMpKSAlPiUgbXV0YXRlKGF1Yz0gTlVMTCkKCgoKIyBtaW4gbm8gdW50aWwgYXVjIDwuNQojIGZvciB0aGF0IGF1YyBhdmcgKy0KCnRhYmxlX2RhdGEgPC0gZnVsbF9kYXRhICU+JQogICAgICAgIGZpbHRlcihleHBlcmltZW50X25hbWUgPT0gImJpZ19mbGlwIixzcGxpdCA9PSAwKSAlPiUKICAgICAgICBncm91cF9ieShkYXRhc2V0LGVzdGltYXRvcixzaWdtYSxoZWlnaHQsb3V0bGllcnMpICU+JQogICAgICAgIHJlZnJhbWUoYXVjID0gbWVhbihhdWMpLCBtaW5fYXVjID0gbWluKGF1YykpICU+JQogICAgICAgIGZpbHRlcihtaW5fYXVjID4gMC41KSAlPiUKICAgICAgICBncm91cF9ieShkYXRhc2V0LGVzdGltYXRvcixzaWdtYSxoZWlnaHQpICU+JQogICAgICAgIGZpbHRlcihvdXRsaWVycyA9PSBtYXgob3V0bGllcnMpKSAlPiUKICAgICAgICBncm91cF9ieShkYXRhc2V0LGVzdGltYXRvcixoZWlnaHQpICU+JQogICAgICAgIGZpbHRlcigoc2lnbWEgPT0gMCkgfCAoKG91dGxpZXJzID09IG1heChvdXRsaWVycykpKSkgJT4lCiAgICAgICAgc2xpY2VfaGVhZChuPTIpICU+JQogICAgICAgIG11dGF0ZShub2lzZSA9IGlmZWxzZShzaWdtYSA+IDAsInNpZ21hIiwiMCIpLCBtaW5fYXVjID0gTlVMTCkgJT4lCiAgICAgICAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9bm9pc2UsIHZhbHVlc19mcm9tID0gYyhvdXRsaWVycyxhdWMsc2lnbWEpKSAlPiUKICAgICAgICBsZWZ0X2pvaW4oYXVjXzEwMDBfZGF0YSwgYnkgPSBqb2luX2J5KGVzdGltYXRvciA9PSBlc3RpbWF0b3IsIGRhdGFzZXQgPT0gZGF0YXNldCwgb3V0bGllcnNfMCA9PSBvdXRsaWVycywgaGVpZ2h0PT1oZWlnaHQsIHNpZ21hXzAgPT0gc2lnbWEpLHN1ZmZpeCA9IGMoIiIsIl8wIikpICU+JQogICAgICAgIGxlZnRfam9pbihhdWNfMTAwMF9kYXRhLCBieSA9IGpvaW5fYnkoZXN0aW1hdG9yID09IGVzdGltYXRvciwgZGF0YXNldCA9PSBkYXRhc2V0LCBvdXRsaWVyc18wID09IG91dGxpZXJzLCBoZWlnaHQ9PWhlaWdodCwgc2lnbWFfc2lnbWEgPT0gc2lnbWEpLHN1ZmZpeCA9IGMoIiIsIl9zaWdtYSIpKSAlPiUKICAgICAgICBsZWZ0X2pvaW4oYXVjX25vcm1hbF9kYXRhKSAlPiUKICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgdHJhbnNtdXRlKAogICAgICAgICAgICAgICAgICBkYXRhc2V0PWRhdGFzZXQsCiAgICAgICAgICAgICAgICAgIGQgPSBpZmVsc2UoZGF0YXNldCA9PSAiU1VTWSIsIDE5LGlmZWxzZShkYXRhc2V0ID09ICJzZWE1MCIsIDMsOCkpLAogICAgICAgICAgICAgICAgICBlcHMgPSAyXmhlaWdodCwKICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0LAogICAgICAgICAgICAgICAgICBudW1fZXN0aW1hdG9ycyA9IChkKzIpXmhlaWdodCwKICAgICAgICAgICAgICAgICAgbW9kZWwgPSBlc3RpbWF0b3IsCiAgICAgICAgICAgICAgICAgIGF1Y196ZXJvID0gYXVjX3plcm8sCiAgICAgICAgICAgICAgICAgIGF1Y196ZXJvX3N0ZCA9IGF1Y196ZXJvX3N0ZCwKICAgICAgICAgICAgICAgICAgbm8uNSA9IG91dGxpZXJzXzAsCiAgICAgICAgICAgICAgICAgIG5vLjUuc2lnbWEgPSBvdXRsaWVyc19zaWdtYSwKICAgICAgICAgICAgICAgICAgYXVjXzEwMDAgPSBhdWNfMTAwMCwKICAgICAgICAgICAgICAgICAgYXVjXzEwMDBfc3RkID0gYXVjXzEwMDBfc3RkLAogICAgICAgICAgICAgICAgICBhdWNfMTAwMC5zaWdtYSA9IGF1Y18xMDAwX3NpZ21hLAogICAgICAgICAgICAgICAgICBhdWNfMTAwMC5zaWdtYV9zdGQgPSBhdWNfMTAwMF9zdGRfc2lnbWEsCiAgICAgICAgICAgICAgICAgIHNpZ21hID0gc2lnbWFfc2lnbWEKICAgICAgICApCgp3cml0ZS5jc3YodGFibGVfZGF0YSwiZmluYWxfdGFibGUuY3N2IikKdGFibGVfZGF0YQojIGxpYnJhcnkoa2FibGVFeHRyYSkKIwojIHRhYmxlX2RhdGEKIwojIGxpYnJhcnkoa2FibGVFeHRyYSkKIyBsaWJyYXJ5KGRwbHlyKQojIHJvd3M8LSByb3cubmFtZXMoZGF0YV9kZikKIwojIHRhYmxlX2RhdGEgJT4lCiMgICAgICAgICBtdXRhdGVfYWxsKGZ1bmN0aW9uKHgpIGZvcm1hdCh4LCBkaWdpdHMgPSAzKSkgJT4lCiMgICAgICAgICBrYmwoYWxpZ24gPSAiciIsICwgYm9va3RhYnMgPSBUUlVFLCByb3cubmFtZXMgPSBUUlVFLCBmb3JtYXQ9ImxhdGV4IikKCgpgYGAKCiMjIFN1bW1hcnkgUGxvdAoKYGBge3IsIGVjaG89RiwgZXZhbCA9IFR9CmxpYnJhcnkoZ2d0aGVtZXMpCgpzdW1tYXJ5X2RhdGEgPC0gZnVsbF9kYXRhICU+JQogICAgICAgIGZpbHRlcihleHBlcmltZW50X25hbWUgPT0gImJpZ19mbGlwIiwgZGF0YXNldCA9PSAiU1VTWSIsIGVzdGltYXRvciA9PSAiU1ZNIiwgc2lnbWEgJWluJSBjKDAsIDFlLTMsMWUtMiwwLjEsMC4yLDAuNSkpICU+JQogICAgICAgIGdyb3VwX2J5KG91dGxpZXJzLHNpZ21hKSAlPiUKICAgICAgICBmaWx0ZXIoc3BsaXQgPT0gMCkgJT4lCiAgICAgICAgcmVmcmFtZSgKICAgICAgICAgICAgICAgIG1lYW5fYXVjID0gbWVhbihhdWMpLAogICAgICAgICAgICAgICAgYXVjX2xvdyA9IChtZWFuKGF1YykgLSBxdCgwLjk3NSwgZGY9bigpLTEpICogc2QoYXVjKSAvIHNxcnQobigpKSksCiAgICAgICAgICAgICAgICBhdWNfaGlnaCA9IChtZWFuKGF1YykgKyBxdCgwLjk3NSwgZGY9bigpLTEpICogc2QoYXVjKSAvIHNxcnQobigpKSksCiAgICAgICAgICAgICAgICBtZWFuX3JhZG9uX2JpYXMgPSBtZWFuKHJhZG9uX2JpYXMsbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgICAgIHJhZG9uX2JpYXNfbG93ID0gKG1lYW4ocmFkb25fYmlhcyxuYS5ybSA9IFRSVUUpIC0gcXQoMC45NzUsIGRmPW4oKS0xKSAqIHNkKHJhZG9uX2JpYXMsbmEucm0gPSBUUlVFKSAvIHNxcnQobigpKSksCiAgICAgICAgICAgICAgICByYWRvbl9iaWFzX2hpZ2ggPSAobWVhbihyYWRvbl9iaWFzLG5hLnJtID0gVFJVRSkgKyBxdCgwLjk3NSwgZGY9bigpLTEpICogc2QocmFkb25fYmlhcyxuYS5ybSA9IFRSVUUpIC8gc3FydChuKCkpKQogICAgICAgICkKCgpsb25nX3N1bW1hcnlfZGF0YSA8LSAgc3VtbWFyeV9kYXRhICU+JQogICAgICAgIHBpdm90X2xvbmdlcihjb2xzID0gYyhtZWFuX2F1YywgbWVhbl9yYWRvbl9iaWFzKSwKICAgICAgICAgICAgICAgICAgICAgbmFtZXNfdG8gPSAibWVhc3VyZSIsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJ2YWx1ZSIpICU+JQogICAgICAgIG11dGF0ZShoaWdoID0gaWZlbHNlKG1lYXN1cmUgPT0gIm1lYW5fYXVjIixhdWNfaGlnaCxyYWRvbl9iaWFzX2hpZ2gpLAogICAgICAgICAgICAgICBsb3cgPSBpZmVsc2UobWVhc3VyZSA9PSAibWVhbl9hdWMiLGF1Y19sb3cscmFkb25fYmlhc19sb3cpKSAlPiUKICAgICAgICBtdXRhdGUoeV9taW4gPSAwLCB5X21heCA9IGlmZWxzZShtZWFzdXJlPT0ibWVhbl9hdWMiLDEsMzApKQoKCmFjY2Vzc2libGVfY29sb3JzIDwtIGMoCiAgICAgICAgIiM0NDc3QUEiLCAiI0VFNjY3NyIsICIjMjI4ODMzIiwgIiNDQ0JCNDQiLAogICAgICAgICIjNjZDQ0VFIiwgIiNBQTMzNzciLCAiI0JCQkJCQiIKKQoKCnAgPC0gZ2dwbG90KGxvbmdfc3VtbWFyeV9kYXRhLCBhZXMoeD1vdXRsaWVycywgZmlsbD1hcy5mYWN0b3Ioc2lnbWEpKSkgKwogICAgICAgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfcmVjdChjb2xvciA9ICJibGFjayIpKSArCiAgICAgICAgZ2VvbV9saW5lKGFlcyh5PXZhbHVlLGNvbG9yID0gYXMuZmFjdG9yKHNpZ21hKSkpICsKICAgICAgICBnZW9tX3JpYmJvbihhZXMoeW1pbiA9IGxvdywgeW1heCA9IGhpZ2gpLGFscGhhID0gMC4yKSArCiAgICAgICAgZ2VvbV9ibGFuayhhZXMoeT15X21pbikpICsKICAgICAgICBnZW9tX2JsYW5rKGFlcyh5PXlfbWF4KSkgKwogICAgICAgIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBhY2Nlc3NpYmxlX2NvbG9ycykgKwogICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGFjY2Vzc2libGVfY29sb3JzKSArCiAgICAgICAgZmFjZXRfd3JhcCh+bWVhc3VyZSxzY2FsZXMgPSAiZnJlZV95IiwKICAgICAgICAgICAgICAgICAgIHN0cmlwLnBvc2l0aW9uID0gImxlZnQiLAogICAgICAgICAgICAgICAgICAgbGFiZWxsZXIgPSBsYWJlbGxlcihtZWFzdXJlID0gYygibWVhbl9hdWMiID0gIlJPQy1BVUMiLCJtZWFuX3JhZG9uX2JpYXMiID0gIkRpc3RhbmNlIHRvIHRydWUgY2VudGVyIikpKSArCiAgICAgICAgIyBnZW9tX2xpbmUoYWVzKHk9bWVhbl9yYWRvbl9iaWFzL2NvZWZmK29mZnNldCxjb2xvciA9IGFzLmZhY3RvcihzaWdtYSkpKSArCiAgICAgICAgIyBnZW9tX3JpYmJvbihhZXMoeW1pbiA9IHJhZG9uX2JpYXNfbG93L2NvZWZmK29mZnNldCwgeW1heCA9IHJhZG9uX2JpYXNfaGlnaC9jb2VmZitvZmZzZXQpLGFscGhhID0gMC4yKSArCiAgICAgICAgZ2VvbV92bGluZShhZXMoeGludGVyY2VwdCA9IDUyLCBsaW5ldHlwZSA9ICLOuiIpKSArCiAgICAgICAgeGxpbSgwLDEwMDApICsKICAgICAgICBsYWJzKHRpdGxlID0gIkxpbmVhciBTVk0gUmFkb24tbWFjaGluZSBvbiBTVVNZIERhdGFzZXQgaD0zIiwKICAgICAgICAgICAgIHggPSAiTnVtYmVyIG9mIG91dGxpZXJzIiwKICAgICAgICAgICAgIHkgPSAiIiwKICAgICAgICAgICAgIGNvbG9yID0gImFkZGl0aXZlIG5vaXNlICjPgykiLAogICAgICAgICAgICAgZmlsbCA9ICJhZGRpdGl2ZSBub2lzZSAoz4MpIikgKwogICAgICAgIHNjYWxlX2xpbmV0eXBlX21hbnVhbChuYW1lPSLOuiIsIGxhYmVscyA9ICIiLCB2YWx1ZXM9ICJkYXNoZWQiKSArCiAgICAgICAgdGhlbWVfbWluaW1hbCgpICsKICAgICAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwKICAgICAgICAgICAgICBsZWdlbmQuZGlyZWN0aW9uPSJob3Jpem9udGFsIiwKICAgICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLCAgIyBBZGp1c3QgbGVnZW5kIHRleHQgc2l6ZQogICAgICAgICAgICAgIGxlZ2VuZC5rZXkud2lkdGggPSB1bml0KDAuNzUsICJjbSIpLCAgIyBBZGp1c3Qgd2lkdGggb2YgbGVnZW5kIGtleXMgKGNvbG9yIGJveGVzKQogICAgICAgICAgICAgIGxlZ2VuZC5rZXkuaGVpZ2h0ID0gdW5pdCgwLjUsICJjbSIpLAogICAgICAgICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwKICAgICAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxOCwgZmFjZSA9ICJib2xkIiksCiAgICAgICAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYsIHZqdXN0ID0yKSwgIyBMZWZ0LWFsaWduIGZhY2V0IGxhYmVscwogICAgICAgICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCwgaGp1c3QgPSAwKSwgIyBSaWdodC1hbGlnbiB5LWF4aXMgbGFiZWxzCiAgICAgICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAjIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgICAgc3RyaXAucGxhY2VtZW50ID0gIm91dHNpZGUiLAogICAgICAgICAgICAgICAjIEtlZXAgdGhlIHBhbmVsIGJvcmRlcgogICAgICAgICAgICAgICMgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGNvbG9yID0gImdyYXk3MCIsIGZpbGwgPSBOQSwgc2l6ZT0wLjUpLAogICAgICAgICAgICAgIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoKSkgIyBLZWVwIHRpY2sgbWFya3MpCgoKZ2dzYXZlKGZpbGU9InRlc3Quc3ZnIiwgcGxvdD1wLCB3aWR0aD0zMi8zLCBoZWlnaHQ9Ni41KQpwCmBgYAoKCgoKYGBge3J9CmRhdGEgPC0gcmVhZC5jc3YoInJlc3VsdHNfYWdncmVnYXRlZC9TVVNZX1NWTV9icmVha18yMDI0LTA2LTE0XzA5OjMxOjUyLmNzdiIpCmJyZWFrX2Rvd25fZXN0aW1hdGVzIDwtIGRhdGEgJT4lIGdyb3VwX2J5KG91dGxpZXJzKSAlPiUgcmVmcmFtZShicmVha19wcm9iID0gbWVhbihhdWM8MC41KSkKcGxvdChicmVha19kb3duX2VzdGltYXRlcykKYnJlYWtfZG93bl9lc3RpbWF0ZXMKYGBg